package com.wanmait.happyheating.util;

import org.apache.commons.io.FilenameUtils;
import org.springframework.util.ResourceUtils;
import org.springframework.web.multipart.MultipartFile;

import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.util.UUID;

/**
 * 图片保存的工具类
 * @author 于谦涛
 * @since 2021-06-02
 */
public class PictureUtils {
    /**
     * 判断文件大小及更改文件名的方法
     * @author 于谦涛
     * @since 2021-06-02
     */
    public static String picture(MultipartFile file) {
        System.out.println("文件大小：" + file.getSize() / 1024 + "k");
        //判断文件是否为空 empty：空的
        if (file.isEmpty()) {
            return "文件为空！";
        }
        if (file.getSize() > 1024 * 1024 * 4) {
            return "图片大小不能超过4M";
        }
        //获得后缀(文件类型)
        String ext = FilenameUtils.getExtension(file.getOriginalFilename());
        //contains：包含 判断类型是否为合法的文件类型
        //toLowerCase：小写形式
        if ("".equals(ext) || !"jpg,jpeg,png,gif".contains(ext.toLowerCase()))
        {
            return "只能上传图片：jpg,jpeg,png,gif";
        }
        //重新命名
        String filename = UUID.randomUUID().toString().replaceAll("-", "") + "." + ext;
        System.out.println("文件名："+filename);
        try {
            //保存图片
            upload(file,filename);
            //upload1(file1,filename);
        } catch (Exception e) {
            e.printStackTrace();
            return "保存图片出错";
        }
        return filename;
    }
    /**
     * 将图片保存到项目的方法
     * @author 于谦涛
     * @since 2021-06-02
     */
    private static void upload(MultipartFile file,String name)throws Exception
    {
        if (null==name||"".equals(name)){
            name=file.getOriginalFilename();
        }
        //文件路径
        //图片保存路径  存在了target标签里
        String path = ResourceUtils.getURL("classpath:").getPath();
        path += "static/adminImages/"+name;
        //String path="src\\main\\resources\\static\\adminImages\\"+name;
        //利用图片输出流将文件保存到指定地址
        BufferedOutputStream outputStream=new BufferedOutputStream(new FileOutputStream(path));
        outputStream.write(file.getBytes());
        outputStream.flush();
        outputStream.close();
    }    /**
     * 将图片保存到项目的方法
     * @author 于谦涛
     * @since 2021-06-02
     */
//    private static void upload1(MultipartFile file,String name)throws Exception
//    {
//        if (null==name||"".equals(name)){
//            name=file.getOriginalFilename();
//        }
//        //图片保存路径  存在了target标签里
//        String path = ResourceUtils.getURL("classpath:").getPath();
//        path += "static/adminImages";
//        //利用图片输出流将文件保存到指定地址
//        BufferedOutputStream outputStream=new BufferedOutputStream(new FileOutputStream(path));
//        outputStream.write(file.getBytes());
//        outputStream.flush();
//        outputStream.close();
//    }
}
